105 research outputs found

    Reasoning and Improving on Software Resilience against Unanticipated Exceptions

    Get PDF
    In software, there are the errors anticipated at specification and design time, those encountered at development and testing time, and those that happen in production mode yet never anticipated. In this paper, we aim at reasoning on the ability of software to correctly handle unanticipated exceptions. We propose an algorithm, called short-circuit testing, which injects exceptions during test suite execution so as to simulate unanticipated errors. This algorithm collects data that is used as input for verifying two formal exception contracts that capture two resilience properties. Our evaluation on 9 test suites, with 78% line coverage in average, analyzes 241 executed catch blocks, shows that 101 of them expose resilience properties and that 84 can be transformed to be more resilient

    NPEFix: Automatic Runtime Repair of Null Pointer Exceptions in Java

    Full text link
    Null pointer exceptions, also known as null dereferences are the number one exceptions in the field. In this paper, we propose 9 alternative execution semantics when a null pointer exception is about to happen. We implement those alternative execution strategies using code transformation in a tool called NPEfix. We evaluate our prototype implementation on 11 field null dereference bugs and 519 seeded failures and show that NPEfix is able to repair at runtime 10/11 and 318/519 failures

    Dynamic Analysis can be Improved with Automatic Test Suite Refactoring

    Full text link
    Context: Developers design test suites to automatically verify that software meets its expected behaviors. Many dynamic analysis techniques are performed on the exploitation of execution traces from test cases. However, in practice, there is only one trace that results from the execution of one manually-written test case. Objective: In this paper, we propose a new technique of test suite refactoring, called B-Refactoring. The idea behind B-Refactoring is to split a test case into small test fragments, which cover a simpler part of the control flow to provide better support for dynamic analysis. Method: For a given dynamic analysis technique, our test suite refactoring approach monitors the execution of test cases and identifies small test cases without loss of the test ability. We apply B-Refactoring to assist two existing analysis tasks: automatic repair of if-statements bugs and automatic analysis of exception contracts. Results: Experimental results show that test suite refactoring can effectively simplify the execution traces of the test suite. Three real-world bugs that could previously not be fixed with the original test suite are fixed after applying B-Refactoring; meanwhile, exception contracts are better verified via applying B-Refactoring to original test suites. Conclusions: We conclude that applying B-Refactoring can effectively improve the purity of test cases. Existing dynamic analysis tasks can be enhanced by test suite refactoring

    Characterizing, Verifying and Improving Software Resilience with Exception Contracts and Test Suites

    Get PDF
    International audienceIn this presentation, we aim at reasoning on the ability of software to correctly handle unanticipated exceptions. Short paper

    Automated runtime software repair

    Get PDF
    International audiencethesis summar

    Casper: Debugging Null Dereferences with Dynamic Causality Traces

    Get PDF
    Fixing a software error requires understanding its root cause. In this paper, we introduce "causality traces", crafted execution traces augmented with the information needed to reconstruct the causal chain from the root cause of a bug to an execution error. We propose an approach and a tool, called Casper, for dynamically constructing causality traces for null dereference errors. The core idea of Casper is to inject special values, called "ghosts", into the execution stream to construct the causality trace at runtime. We evaluate our contribution by providing and assessing the causality traces of 14 real null dereference bugs collected over six large, popular open-source projects. Over this data set, Casper builds a causality trace in less than 5 seconds

    Mammalian frataxin directly enhances sulfur transfer of NFS1 persulfide to both ISCU and free thiols

    Get PDF
    Friedreich's ataxia is a severe neurodegenerative disease caused by the decreased expression of frataxin, a mitochondrial protein that stimulates iron sulfur (Fe-S) cluster biogenesis. In mammals, the primary steps of Fe-S cluster assembly are performed by the NFS1 ISD11 ISCU complex via the formation of a persulfide intermediate on NFS1. Here we show that frataxin modulates the reactivity of NFS1 persulfide with thiols. We use maleimide-peptide com- pounds along with mass spectrometry to probe cysteine-persulfide in NFS1 and ISCU. Our data reveal that in the presence of ISCU, frataxin enhances the rate of two similar reactions on NFS1 persulfide: sulfur transfer to ISCU leading to the accumulation of a persulfide on the cysteine C104 of ISCU, and sulfur transfer to small thiols such as DTT, L-cysteine and GSH leading to persulfuration of these thiols and ultimately sulfide release. These data raise important questions on the physiological mechanism of Fe-S cluster assembly and point to a unique function of frataxin as an enhancer of sulfur transfer within the NFS1 ISD11 ISCU complex

    Crystal polymorphism in fragment-based lead discovery of ligands of the catalytic domain of UGGT, the glycoprotein folding quality control checkpoint

    Get PDF
    None of the current data processing pipelines for X-ray crystallography fragment-based lead discovery (FBLD) consults all the information available when deciding on the lattice and symmetry (i.e., the polymorph) of each soaked crystal. Often, X-ray crystallography FBLD pipelines either choose the polymorph based on cell volume and point-group symmetry of the X-ray diffraction data or leave polymorph attribution to manual intervention on the part of the user. Thus, when the FBLD crystals belong to more than one crystal polymorph, the discovery pipeline can be plagued by space group ambiguity, especially if the polymorphs at hand are variations of the same lattice and, therefore, difficult to tell apart from their morphology and/or their apparent crystal lattices and point groups. In the course of a fragment-based lead discovery effort aimed at finding ligands of the catalytic domain of UDP–glucose glycoprotein glucosyltransferase (UGGT), we encountered a mixture of trigonal crystals and pseudotrigonal triclinic crystals—with the two lattices closely related. In order to resolve that polymorphism ambiguity, we have written and described here a series of Unix shell scripts called CoALLA (crystal polymorph and ligand likelihood-based assignment). The CoALLA scripts are written in Unix shell and use autoPROC for data processing, CCP4-Dimple/REFMAC5 and BUSTER for refinement, and RHOFIT for ligand docking. The choice of the polymorph is effected by carrying out (in each of the known polymorphs) the tasks of diffraction data indexing, integration, scaling, and structural refinement. The most likely polymorph is then chosen as the one with the best structure refinement Rfree statistic. The CoALLA scripts further implement a likelihood-based ligand assignment strategy, starting with macromolecular refinement and automated water addition, followed by removal of the water molecules that appear to be fitting ligand density, and a final round of refinement after random perturbation of the refined macromolecular model, in order to obtain unbiased difference density maps for automated ligand placement. We illustrate the use of CoALLA to discriminate between H3 and P1 crystals used for an FBLD effort to find fragments binding to the catalytic domain of Chaetomium thermophilum UGGT
    • …
    corecore